Raspberry PiでATコマンドを使ってSORACOM IoT SIMのIMSIを取得する
IoT事業部の木村です。
SORACOMのAPIを使用する際に、IMSIを指定してリクエストすることって多いですよね。
メタデータサービスを使用すれば、SIMレベルの認証が済んでいるため、IMSIを含むSIMに関するメタデータを手軽に取得することが可能です。
今回はもろもろの要件でメタデータサービスが使えない可能性があったので、表題の通り、ATコマンドを使ってSIMのIMSIを取得する方法を試しましたのでご紹介させていただきます。
そもそもIMSIとは
International Mobile Subscriber Identityの略で、携帯電話の回線契約1つ1つに一意に割り当てられる最大15桁の番号です。
SORACOMプラットフォームにおいては、SIMの操作のキーになったりする重要な要素です。
ちなみに、「イムジィ」と発音するらしいです。(ずっと「アイエムエスアイ」と言ってました...)
ATコマンドとは
Hayes社が開発した、モデムを制御するためのコマンド群です。
ATではじまる一連の短いテキスト文字列で構成されており、これらを組み合わせることで、ダイヤル、切断、接続のパラメータ変更などの操作を行うためのコマンドを生成することができます。
今回試した構成
Raspberry Pi: 4 Model B Rev 1.2
USBドングル: AK-020_V12_20180827
コマンドを発行
1. Raspberry PiにSSHで接続します。
$ ssh pi@raspberrypi.local
2. シリアルポートを特定する
pi@raspberrypi:~ $ ls /dev/tty* /dev/tty1 /dev/tty17 /dev/tty24 /dev/tty31 /dev/tty39 /dev/tty46 /dev/tty53 /dev/tty60 /dev/ttyUSB0 /dev/tty10 /dev/tty18 /dev/tty25 /dev/tty32 /dev/tty4 /dev/tty47 /dev/tty54 /dev/tty61 /dev/ttyUSB1 /dev/tty11 /dev/tty19 /dev/tty26 /dev/tty33 /dev/tty40 /dev/tty48 /dev/tty55 /dev/tty62 /dev/ttyUSB2 /dev/tty12 /dev/tty2 /dev/tty27 /dev/tty34 /dev/tty41 /dev/tty49 /dev/tty56 /dev/tty63 /dev/ttyUSB3 /dev/tty13 /dev/tty20 /dev/tty28 /dev/tty35 /dev/tty42 /dev/tty5 /dev/tty57 /dev/tty7 /dev/ttyprintk /dev/tty14 /dev/tty21 /dev/tty29 /dev/tty36 /dev/tty43 /dev/tty50 /dev/tty58 /dev/tty8
環境によって異なりますが、デバイスファイルの一覧が出てくるので、該当のポートに目星をつけます。
私の環境では、/dev/ttyUSB1になります。
Raspberry Pi起動後、USBポートにデバイスを挿入する順番等によりどのポートが使用されるかは変わるようです。
3. screenコマンドでセッションを開始してコマンド入力
pi@raspberrypi:~ $ screen /dev/ttyUSB1
真っ黒な画面が開くので、AT+CIMIと入力するとISMIが出力されます。
AT+CIMI 44010xxxxxxxxxx OK
なお、screen画面からは、control + a + kで抜けることができます。
以上でIMSIを取得することができました!